home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / linux / virtio_net.h < prev    next >
C/C++ Source or Header  |  2008-10-24  |  2KB  |  48 lines

  1. #ifndef _LINUX_VIRTIO_NET_H
  2. #define _LINUX_VIRTIO_NET_H
  3. /* This header is BSD licensed so anyone can use the definitions to implement
  4.  * compatible drivers/servers. */
  5. #include <linux/virtio_config.h>
  6.  
  7. /* The ID for virtio_net */
  8. #define VIRTIO_ID_NET    1
  9.  
  10. /* The feature bitmap for virtio net */
  11. #define VIRTIO_NET_F_CSUM    0    /* Host handles pkts w/ partial csum */
  12. #define VIRTIO_NET_F_GUEST_CSUM    1    /* Guest handles pkts w/ partial csum */
  13. #define VIRTIO_NET_F_MAC    5    /* Host has given MAC address. */
  14. #define VIRTIO_NET_F_GSO    6    /* Host handles pkts w/ any GSO type */
  15. #define VIRTIO_NET_F_GUEST_TSO4    7    /* Guest can handle TSOv4 in. */
  16. #define VIRTIO_NET_F_GUEST_TSO6    8    /* Guest can handle TSOv6 in. */
  17. #define VIRTIO_NET_F_GUEST_ECN    9    /* Guest can handle TSO[6] w/ ECN in. */
  18. #define VIRTIO_NET_F_GUEST_UFO    10    /* Guest can handle UFO in. */
  19. #define VIRTIO_NET_F_HOST_TSO4    11    /* Host can handle TSOv4 in. */
  20. #define VIRTIO_NET_F_HOST_TSO6    12    /* Host can handle TSOv6 in. */
  21. #define VIRTIO_NET_F_HOST_ECN    13    /* Host can handle TSO[6] w/ ECN in. */
  22. #define VIRTIO_NET_F_HOST_UFO    14    /* Host can handle UFO in. */
  23.  
  24. struct virtio_net_config
  25. {
  26.     /* The config defining mac address (if VIRTIO_NET_F_MAC) */
  27.     __u8 mac[6];
  28. } __attribute__((packed));
  29.  
  30. /* This is the first element of the scatter-gather list.  If you don't
  31.  * specify GSO or CSUM features, you can simply ignore the header. */
  32. struct virtio_net_hdr
  33. {
  34. #define VIRTIO_NET_HDR_F_NEEDS_CSUM    1    // Use csum_start, csum_offset
  35.     __u8 flags;
  36. #define VIRTIO_NET_HDR_GSO_NONE        0    // Not a GSO frame
  37. #define VIRTIO_NET_HDR_GSO_TCPV4    1    // GSO frame, IPv4 TCP (TSO)
  38. #define VIRTIO_NET_HDR_GSO_UDP        3    // GSO frame, IPv4 UDP (UFO)
  39. #define VIRTIO_NET_HDR_GSO_TCPV6    4    // GSO frame, IPv6 TCP
  40. #define VIRTIO_NET_HDR_GSO_ECN        0x80    // TCP has ECN set
  41.     __u8 gso_type;
  42.     __u16 hdr_len;        /* Ethernet + IP + tcp/udp hdrs */
  43.     __u16 gso_size;        /* Bytes to append to hdr_len per frame */
  44.     __u16 csum_start;    /* Position to start checksumming from */
  45.     __u16 csum_offset;    /* Offset after that to place checksum */
  46. };
  47. #endif /* _LINUX_VIRTIO_NET_H */
  48.